create table javabox_board(
 no number primary key,
 title varchar2(50) not null,
 content varchar2(1000) not null,
 writedate date,
 count number not null,
 category varchar2(50) not null,
 id varchar2(50) not null

)
ALTER TABLE javabox_board DROP CONSTRAINT fk_tt_id;

ALTER TABLE javabox_board ADD CONSTRAINT fk_tt_id FOREIGN KEY (id) 
   REFERENCES javabox_member(id) ON DELETE CASCADE

drop table javabox_board
drop sequence javabox_board_seq nocache;
create sequence javabox_board_seq nocache;


insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'Spring MVC 흐름 구성도'
 ,'Spring MVC 흐름 구성도

• Spring MVC - MVC 패턴 기반 웹 개발 프레임 워크
• 요청 처리 순서 - DispatcherServlet이 요청을 수신
• 단일 Front controleer servlet
• 요청을 수신하여 처리를 다른 컴포넌트에 위임
• 어느 컨트롤러에 요청을 전송할 지 결정
• DispatcherServlet은 HandlerMapping에 어느컨트롤러를 사용할 것인지 문의
• DispatcherServlet은 요청을 컨트롤러에게 전송하고 컨트롤러는 요청을 처리한 후 결과 리턴
• 비즈니스 로직 수행 후 결과 정보(Model)가 생성되어 JSP와 같은 뷰에서 사용
• ModelAndView 를 생성하여 DispatcherServlet에 리턴
• ModelAndView 정보를 바탕으로 ViewResolver에게 View를 요청
• View는 결과 정보를 사용하여 화면에 표현합니다.',sysdate,0,'spring','root');

 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'Spring MVC 구현 Step','
Spring MVC 구현 Step
• Web.XML에 DispacherServlet 등록 및 Spring 설정 파일 등록
• Spring 설정파일에 HandlerMapping 설정
• 컨트롤러 구현 및 Spring 설정 파일에 등록
• 컨트롤러 구현 및 Spring 설정 파일에 등록
• 컨트롤러와 JSP의 연결 위해 View Resolver Spring 설정 파일에 등록
• JSP (or View 작성 후 설정) 코드 작성',sysdate,0,'spring','root');

 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'IoC','
IoC(Inversion of Control - 제어의 역전)란?
IoC란 간단하게 말하여 프로그램의 제어 흐름 구조가 바뀌는 것이다.
일반적으로, main() 같은 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 결정, 생성하고, 만들어진 오브젝트 내의 메소드를 호출하는 작업을 반복한다. 이런 구조에서 각 오브젝트느 프로그램 흐름을 결정하거나 사용할 오브젝트를 구성하는 작업에 능동적으로 참여한다.
즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다.',sysdate,0,'spring','root');

 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'Spring AOP'
 ,'AOP (Aspect Oriented Programming)
- 기능을 핵심 비지니스 로직과 공통 모듈로 구분하고, 핵심 로직에 영향을 미치지 않고 사이사이에 공통 모듈을 효과적으로 잘 끼워넣도록 하는 개발 방법이다.
공통 모듈(보안 인증, 로깅 같은 요소등)을 만든 후에 코드 밖에서 이 모듈을 비지니스 로직에 삽입하는 것이 바로 AOP 적인 개발이다. 코드 밖에서 설정된다는 것이 핵심이다.',sysdate,0,'spring','java');
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'AOP가 사용되는 경우'
 ,'AOP가 사용되는 경우
1) 간단한 메소드 성능 검사개발 도중 특히 DB에 다량의 데이터를 넣고 빼는 등의 배치 작업에 대하여 시간을 측정해보고 쿼리를 개선하는 작업은 매우 의미가 있다. 이 경우 매번 해당 메소드 처음과 끝에 System.currentTimeMills();를 사용하거나, 스프링이 제공하는 StopWatch코드를 사용하기는 매우 번거롭다.이런 경우 해당 작업을 하는 코드를 밖에서 설정하고 해당 부분을 사용하는 편이 편리하다.
2) 트랜잭션 처리트랜잭션의 경우 비지니스 로직의 전후에 설정된다. 하지만 매번 사용하는 트랜잭션 (try~catch부분)의 코드는 번거롭고, 소스를 더욱 복잡하게 보여준다.
3) 예외 반환스프링에는 DataAccessException이라는 매우 잘 정의되어 있는 예외 계층 구조가 있다. 예전 하이버네이트 예외들은 몇 개 없었고 그나마도 Uncatched Exception이 아니였다. 이렇게 구조가 별로 안 좋은 예외들이 발생했을 때, 그걸 잡아서 잘 정의되어 있는 예외 계층 구조로 변환해서 다시 던지는 애스팩트는 제 3의 프레임워크를 사용할 때, 본인의 프레임워크나 애플리케이션에서 별도의 예외 계층 구조로 변환하고 싶을 때 유용하다.
4) 아키텍처 검증
5) 기타- 하이버네티스와 JDBC를 같이 사용할 경우, DB 동기화 문제 해결- 멀티쓰레드 Safety 관련하여 작업해야 하는 경우, 메소드들에 일괄적으로 락을 설정하는 애스팩트- 데드락 등으로 인한 PessimisticLockingFailureException등의 예외를 만났을 때 재시도하는 애스팩트- 로깅, 인증, 권한 등'
 ,sysdate,0,'java se','java');
 
insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'Java SE'
 ,'Java SE
자바의 특징 -> 플랫폼 독립적 , 객체 지향 언어 , 멀티 스레드 , 가비 컬렉션
자바의 기본문법	: 클래스와 객체 관계
		  변수 , 메서드 , 생성자
		  데이터 타입 : primitive 와 reference
	 	  제어문 : 조건문과 반복문						  		   if switch	for, while, do while
		  변수의 종류 : 인스턴스 멤버변수
				로컬변수
				클래스 멤버변수 : static
객체 지향 3가지 주요 개념 : 
Encapsulation , Inheritance, Polymorphism',sysdate,0,'java se','java');

 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'jdbc'
 ,'** jdbc **
java database connectivity
java application과 database 연동을 위한 api(기술)

jdbc architecture

java application <---> JDBC API  <---->	DB
			Interface									
			환경설정 : jdk/jre/lib/ext/ajdbcXX.jar
java application 개발시
표준화된 JDBC 인터페이스를 보고 개발하고
실제 동작은 구현된 Database 의 class 가 동작된다.
-> db 종류에 관계없이 동일한 코드로 구현이 가능하다.
		-> 플랫폼 독립적 , 유지보수성',sysdate,0,'jdbc','java');
		
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'Servlet'
 ,'Servlet Lifecycle
	init() - service() - destroy()
	: init() : 서블릿 객체 생성후 초기화 작업 담당. 
		 ServletConfig 인터페이스 타입의 객체를 주입
		 client 100명 동일 서블릿 접속 -> init()은 단 한번 호출
	service(request, response) -> doGet() or doPost()
	       : request와 response 는 interface
		요청시마다 was(web container)가 생성 후 주입	  			  	요청시마다 매번 실행
	destroy() : 서블릿 인스턴스가 was에서 해제될 때 한번 실행',sysdate,0,'servlet','java');
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'test14','test!!!!',sysdate,0,'java se','java');
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'test15','test!!!!',sysdate,0,'java se','java');
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'test16','test!!!!',sysdate,0,'java se','java');
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'test17','test!!!!',sysdate,0,'java se','java');
 
 
 insert into javabox_board(no,title, content, writedate, count, category,id)
 values(javabox_board_seq.nextval,'test2','test!22222222222222222!!!',sysdate,0,'java se','java')
 
select no,title, content, writedate, count, category,id from javabox_board;



ALTER TABLE news_board DROP CONSTRAINT fk_qa_id;

ALTER TABLE news_board ADD CONSTRAINT fk_qa_id FOREIGN KEY (id) 
   REFERENCES javabox_member(id) ON DELETE CASCADE
   
   
   

select b.no, b.title, b.content, b.writedate, b.count, b.category, m.id
from javabox_board b,javabox_member m
where b.id=m.id and no=1;

select b.no, b.title, b.content, b.writedate, b.count, b.category, m.id
from javabox_board b,javabox_member m
where b.id=m.id and no=12;

update javabox_board 
 		set title='444', content='444', writedate=sysdate, category='jdbc'
 		where no=12;